﻿
using System;

namespace ibba.src.noriskbo.Models
{
    public class Garantia : ServiceGarantia.GarantiaManual
    {
        public Garantia()
        {
            this.DataInclusao = DateTime.Now;
            this.UsuarioIncluiu = AppHelper.NomeUsuario;

            _validarCampos = new ValidatorFields();
            _validarCampos.AddValidation("CodigoContrato");
            _validarCampos.AddValidation("IdCliente", new ValidatorFields.AdditionalValidation
            {
                Condition = ValidatorFields.ConditionType.GreaterThan,
                Value = 0,
                MsgError = "Campo de preenchimento obrigatório"
            });
            _validarCampos.AddValidation("IdProdutoRisco", new ValidatorFields.AdditionalValidation
            {
                Condition = ValidatorFields.ConditionType.GreaterThan,
                Value = 0,
                MsgError = "Campo de preenchimento obrigatório"
            });

            _validarCampos.AddValidation("Numero");
            _validarCampos.AddValidation("CodigoIntrumento");
            _validarCampos.AddValidation("CodigoBem");
            _validarCampos.AddValidation("CodigoNatureza");
            _validarCampos.AddValidation("Moeda");
            _validarCampos.AddValidation("ValorAtualizadoMoeda");
            _validarCampos.AddValidation("ValorOriginalMoeda");
            _validarCampos.AddValidation("DescricaoGarantia");

        }

        private string _descricaoGarantia;
        public string DescricaoGarantia
        {
            get { return _descricaoGarantia; }
            set
            {
                _descricaoGarantia = value;
                base.RaisePropertyChanged("DescricaoGarantia");
            }
        }

        private string _codigoAcao;
        public string CodigoAcao
        {
            get { return _codigoAcao; }
            set
            {
                _codigoAcao = value;
                base.RaisePropertyChanged("CodigoAcao");
            }
        }

        private string _codigoBolsa;
        public string CodigoBolsa
        {
            get { return _codigoBolsa; }
            set
            {
                _codigoBolsa = value;
                base.RaisePropertyChanged("CodigoBolsa");
            }
        }

        private string _codigoIncidencia;
        public string CodigoIncidencia
        {
            get { return _codigoIncidencia; }
            set
            {
                _codigoIncidencia = value;
                base.RaisePropertyChanged("CodigoIncidencia");
            }
        }

        private decimal _percentualIncidencia;
        public decimal PercentualIncidencia
        {
            get { return _percentualIncidencia; }
            set
            {
                _percentualIncidencia = value;
                base.RaisePropertyChanged("PercentualIncidencia");
            }
        }

        private int _codigoInstrumento;
        public int CodigoInstrumento
        {
            get { return _codigoInstrumento; }
            set
            {
                _codigoInstrumento = value;
                base.RaisePropertyChanged("CodigoInstrumento");
            }
        }

        private int _codigoBem;
        public int CodigoBem
        {
            get { return _codigoBem; }
            set
            {
                _codigoBem = value;
                base.RaisePropertyChanged("CodigoBem");
            }
        }

        private int _codigoNatureza;
        public int CodigoNatureza
        {
            get { return _codigoNatureza; }
            set
            {
                _codigoNatureza = value;
                base.RaisePropertyChanged("CodigoNatureza");
            }
        }

        private decimal _qualidadeGarantia;
        public decimal QualidadeGarantia
        {
            get { return _qualidadeGarantia; }
            set
            {
                _qualidadeGarantia = value;
                base.RaisePropertyChanged("QualidadeGarantia");
            }
        }

        private DateTime? _dataAvaliacao;
        public DateTime? DataAvaliacao
        {
            get { return _dataAvaliacao; }
            set
            {
                _dataAvaliacao = value;
                base.RaisePropertyChanged("DataAvaliacao");
            }
        }

        private DateTime? _dataVencimento;
        public DateTime? DataVencimento
        {
            get { return _dataVencimento; }
            set
            {
                _dataVencimento = value;
                base.RaisePropertyChanged("DataVencimento");
            }
        }

        private bool _formalizada;
        public bool Formalizada
        {
            get { return _formalizada; }
            set
            {
                _formalizada = value;
                base.RaisePropertyChanged("Formalizada");
            }
        }

        private bool _sobrepoeAutomatica;
        public bool SobrepoeAutomatica
        {
            get { return _sobrepoeAutomatica; }
            set
            {
                _sobrepoeAutomatica = value;
                base.RaisePropertyChanged("SobrepoeAutomatica");
            }
        }

        private DateTime? _dataAlteracao;
        public DateTime? DataAlteracao
        {
            get { return _dataAlteracao; }
            set
            {
                _dataAlteracao = value;
                base.RaisePropertyChanged("DataAlteracao");
            }
        }

        private string _usuarioAlterou;
        public string UsuarioAlterou
        {
            get { return _usuarioAlterou; }
            set
            {
                _usuarioAlterou = value;
                base.RaisePropertyChanged("UsuarioAlterou");
            }
        }

        private DateTime _dataInclusao;
        public DateTime DataInclusao
        {
            get { return _dataInclusao; }
            set
            {
                _dataInclusao = value;
                base.RaisePropertyChanged("DataInclusao");
            }
        }

        private string _usuarioIncluiu;
        public string UsuarioIncluiu
        {
            get { return _usuarioIncluiu; }
            set
            {
                _usuarioIncluiu = value;
                base.RaisePropertyChanged("UsuarioIncluiu");
            }
        }

        private decimal _valorAtualizadoMoeda;
        public decimal ValorAtualizadoMoeda
        {
            get { return _valorAtualizadoMoeda; }
            set
            {
                _valorAtualizadoMoeda = value;
                base.RaisePropertyChanged("ValorAtualizadoMoeda");
            }
        }

        private decimal _valorOriginalMoeda;
        public decimal ValorOriginalMoeda
        {
            get { return _valorOriginalMoeda; }
            set
            {
                _valorOriginalMoeda = value;
                base.RaisePropertyChanged("ValorOriginalMoeda");
            }
        }

        private ValidatorFields _validarCampos;
        public ValidatorFields ValidarCampos { get { return _validarCampos; } }

        #region Members_IDataErrorInfo

        public string Error { get { return null; } }
        public string this[string columnName] { get { return Validar(columnName); } }

        #endregion

        private string Validar(string pCampo)
        {
            string msg = ValidarCampos.Validate(this, pCampo);

            //if (string.IsNullOrWhiteSpace(msg))
            //{
            //    if (this.TipoContato == 1) //Telefone
            //    {
            //        msg = "Campo de preenchimento obrigatório";
            //        switch (pCampo)
            //        {
            //            case "DDDTelefone":
            //                if (!string.IsNullOrWhiteSpace(this.DDDTelefone)) msg = null;
            //                break;
            //            case "Telefone": 
            //                if (!string.IsNullOrWhiteSpace(this.Telefone)) msg = null;
            //                break;
            //            case "DDDCelular":
            //                if (!string.IsNullOrWhiteSpace(this.DDDCelular)) msg = null;
            //                break;
            //            case "Celular":
            //                if (!string.IsNullOrWhiteSpace(this.Celular)) msg = null;
            //                break;
            //            default:
            //                msg = null;
            //                break;
            //        }
            //    }
            //}

            return msg;
        }
    }
}
